<?php

namespace Portal\InvoiceBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Lesson
 *
 * @ORM\Table(name="lesson")
 * @ORM\Entity
 */
class Lesson
{
    /**
     * @var integer
     *
     * @ORM\Column(name="ID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="DESCRIPTION", type="text", nullable=true)
     */
    private $description;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="START_DATE", type="date", nullable=false)
     */
    private $startDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="END_DATE", type="date", nullable=false)
     */
    private $endDate;

    /**
     * @var integer
     *
     * @ORM\Column(name="HOURS_PER_DAY", type="integer", nullable=true)
     */
    private $hoursPerDay;

    /**
     * @var integer
     *
     * @ORM\Column(name="TOTAL_HOURS", type="integer", nullable=false)
     */
    private $totalHours;

    /**
     * @var float
     *
     * @ORM\Column(name="HOURLY_FEE", type="float", nullable=true)
     */
    private $hourlyFee;

    /**
     * @var integer
     *
     * @ORM\Column(name="TUTOR_FLAG", type="integer", nullable=false)
     */
    private $tutorFlag;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="TUTOR_FLAG_DATE", type="date", nullable=true)
     */
    private $tutorFlagDate;

    /**
     * @var integer
     *
     * @ORM\Column(name="USER_FLAG", type="integer", nullable=true)
     */
    private $userFlag;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="USER_FLAG_DATE", type="date", nullable=true)
     */
    private $userFlagDate;

    /**
     * @var string
     *
     * @ORM\Column(name="ADDRESS", type="text", nullable=true)
     */
    private $address;

    /**
     * @var integer
     *
     * @ORM\Column(name="IS_ACTIVE", type="integer", nullable=false)
     */
    private $isActive;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="CREATED_AT", type="datetime", nullable=false)
     */
    private $createdAt;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="UPDATED_AT", type="datetime", nullable=true)
     */
    private $updatedAt;

    /**
     * @var \LessonStatus
     *
     * @ORM\ManyToOne(targetEntity="LessonStatus")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="STATUS", referencedColumnName="id")
     * })
     */
    private $status;

    /**
     * @var \Tutor
     *
     * @ORM\ManyToOne(targetEntity="Tutor")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="TUTOR_ID", referencedColumnName="id")
     * })
     */
    private $tutor;

    /**
     * @var \User
     *
     * @ORM\ManyToOne(targetEntity="User")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="USER_ID", referencedColumnName="ID")
     * })
     */
    private $user;

    /**
     * @var \Subject
     *
     * @ORM\ManyToOne(targetEntity="Subject")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="SUBJECT_ID", referencedColumnName="ID")
     * })
     */
    private $subject;

    /**
     * @var \Message
     *
     * @ORM\ManyToOne(targetEntity="Message")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="MESSAGE_ID", referencedColumnName="ID")
     * })
     */
    private $message;

    /**
     * @var \SubjectCategory
     *
     * @ORM\ManyToOne(targetEntity="SubjectCategory")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="SUBJECT_CATEGORY_ID", referencedColumnName="ID")
     * })
     */
    private $subjectCategory;



    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set description
     *
     * @param string $description
     * @return Lesson
     */
    public function setDescription($description)
    {
        $this->description = $description;
    
        return $this;
    }

    /**
     * Get description
     *
     * @return string 
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set startDate
     *
     * @param \DateTime $startDate
     * @return Lesson
     */
    public function setStartDate($startDate)
    {
        $this->startDate = $startDate;
    
        return $this;
    }

    /**
     * Get startDate
     *
     * @return \DateTime 
     */
    public function getStartDate()
    {
        return $this->startDate;
    }

    /**
     * Set endDate
     *
     * @param \DateTime $endDate
     * @return Lesson
     */
    public function setEndDate($endDate)
    {
        $this->endDate = $endDate;
    
        return $this;
    }

    /**
     * Get endDate
     *
     * @return \DateTime 
     */
    public function getEndDate()
    {
        return $this->endDate;
    }

    /**
     * Set hoursPerDay
     *
     * @param integer $hoursPerDay
     * @return Lesson
     */
    public function setHoursPerDay($hoursPerDay)
    {
        $this->hoursPerDay = $hoursPerDay;
    
        return $this;
    }

    /**
     * Get hoursPerDay
     *
     * @return integer 
     */
    public function getHoursPerDay()
    {
        return $this->hoursPerDay;
    }

    /**
     * Set totalHours
     *
     * @param integer $totalHours
     * @return Lesson
     */
    public function setTotalHours($totalHours)
    {
        $this->totalHours = $totalHours;
    
        return $this;
    }

    /**
     * Get totalHours
     *
     * @return integer 
     */
    public function getTotalHours()
    {
        return $this->totalHours;
    }

    /**
     * Set hourlyFee
     *
     * @param float $hourlyFee
     * @return Lesson
     */
    public function setHourlyFee($hourlyFee)
    {
        $this->hourlyFee = $hourlyFee;
    
        return $this;
    }

    /**
     * Get hourlyFee
     *
     * @return float 
     */
    public function getHourlyFee()
    {
        return $this->hourlyFee;
    }

    /**
     * Set tutorFlag
     *
     * @param integer $tutorFlag
     * @return Lesson
     */
    public function setTutorFlag($tutorFlag)
    {
        $this->tutorFlag = $tutorFlag;
    
        return $this;
    }

    /**
     * Get tutorFlag
     *
     * @return integer 
     */
    public function getTutorFlag()
    {
        return $this->tutorFlag;
    }

    /**
     * Set tutorFlagDate
     *
     * @param \DateTime $tutorFlagDate
     * @return Lesson
     */
    public function setTutorFlagDate($tutorFlagDate)
    {
        $this->tutorFlagDate = $tutorFlagDate;
    
        return $this;
    }

    /**
     * Get tutorFlagDate
     *
     * @return \DateTime 
     */
    public function getTutorFlagDate()
    {
        return $this->tutorFlagDate;
    }

    /**
     * Set userFlag
     *
     * @param integer $userFlag
     * @return Lesson
     */
    public function setUserFlag($userFlag)
    {
        $this->userFlag = $userFlag;
    
        return $this;
    }

    /**
     * Get userFlag
     *
     * @return integer 
     */
    public function getUserFlag()
    {
        return $this->userFlag;
    }

    /**
     * Set userFlagDate
     *
     * @param \DateTime $userFlagDate
     * @return Lesson
     */
    public function setUserFlagDate($userFlagDate)
    {
        $this->userFlagDate = $userFlagDate;
    
        return $this;
    }

    /**
     * Get userFlagDate
     *
     * @return \DateTime 
     */
    public function getUserFlagDate()
    {
        return $this->userFlagDate;
    }

    /**
     * Set address
     *
     * @param string $address
     * @return Lesson
     */
    public function setAddress($address)
    {
        $this->address = $address;
    
        return $this;
    }

    /**
     * Get address
     *
     * @return string 
     */
    public function getAddress()
    {
        return $this->address;
    }

    /**
     * Set isActive
     *
     * @param integer $isActive
     * @return Lesson
     */
    public function setIsActive($isActive)
    {
        $this->isActive = $isActive;
    
        return $this;
    }

    /**
     * Get isActive
     *
     * @return integer 
     */
    public function getIsActive()
    {
        return $this->isActive;
    }

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     * @return Lesson
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;
    
        return $this;
    }

    /**
     * Get createdAt
     *
     * @return \DateTime 
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * Set updatedAt
     *
     * @param \DateTime $updatedAt
     * @return Lesson
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;
    
        return $this;
    }

    /**
     * Get updatedAt
     *
     * @return \DateTime 
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }

    /**
     * Set status
     *
     * @param \Portal\InvoiceBundle\Entity\LessonStatus $status
     * @return Lesson
     */
    public function setStatus(\Portal\InvoiceBundle\Entity\LessonStatus $status = null)
    {
        $this->status = $status;
    
        return $this;
    }

    /**
     * Get status
     *
     * @return \Portal\InvoiceBundle\Entity\LessonStatus 
     */
    public function getStatus()
    {
        return $this->status;
    }

    /**
     * Set tutor
     *
     * @param \Portal\InvoiceBundle\Entity\Tutor $tutor
     * @return Lesson
     */
    public function setTutor(\Portal\InvoiceBundle\Entity\Tutor $tutor = null)
    {
        $this->tutor = $tutor;
    
        return $this;
    }

    /**
     * Get tutor
     *
     * @return \Portal\InvoiceBundle\Entity\Tutor 
     */
    public function getTutor()
    {
        return $this->tutor;
    }

    /**
     * Set user
     *
     * @param \Portal\InvoiceBundle\Entity\User $user
     * @return Lesson
     */
    public function setUser(\Portal\InvoiceBundle\Entity\User $user = null)
    {
        $this->user = $user;
    
        return $this;
    }

    /**
     * Get user
     *
     * @return \Portal\InvoiceBundle\Entity\User 
     */
    public function getUser()
    {
        return $this->user;
    }

    /**
     * Set subject
     *
     * @param \Portal\InvoiceBundle\Entity\Subject $subject
     * @return Lesson
     */
    public function setSubject(\Portal\InvoiceBundle\Entity\Subject $subject = null)
    {
        $this->subject = $subject;
    
        return $this;
    }

    /**
     * Get subject
     *
     * @return \Portal\InvoiceBundle\Entity\Subject 
     */
    public function getSubject()
    {
        return $this->subject;
    }

    /**
     * Set message
     *
     * @param \Portal\InvoiceBundle\Entity\Message $message
     * @return Lesson
     */
    public function setMessage(\Portal\InvoiceBundle\Entity\Message $message = null)
    {
        $this->message = $message;
    
        return $this;
    }

    /**
     * Get message
     *
     * @return \Portal\InvoiceBundle\Entity\Message 
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * Set subjectCategory
     *
     * @param \Portal\InvoiceBundle\Entity\SubjectCategory $subjectCategory
     * @return Lesson
     */
    public function setSubjectCategory(\Portal\InvoiceBundle\Entity\SubjectCategory $subjectCategory = null)
    {
        $this->subjectCategory = $subjectCategory;
    
        return $this;
    }

    /**
     * Get subjectCategory
     *
     * @return \Portal\InvoiceBundle\Entity\SubjectCategory 
     */
    public function getSubjectCategory()
    {
        return $this->subjectCategory;
    }
}